package com.smt.modules.bus.service;

import com.baomidou.mybatisplus.service.IService;
import com.smt.common.utils.PageUtils;
import com.smt.common.utils.R;
import com.smt.modules.bus.entity.MemberUserEntity;
import com.smt.modules.bus.entity.ProjectEntity;
import com.smt.modules.bus.vo.ProjectTaskVo;
import com.smt.modules.bus.vo.ProjectVo;

import java.util.Map;

/**
 * 项目信息表
 *
 * @author murong
 * @email 981620741@qq.com
 * @date 2018-09-29 15:37:09
 */
public interface ProjectService extends IService<ProjectEntity> {

    PageUtils queryPage(Map<String, Object> params);


    /**
     * 创建项目
     *
     * @param project
     * @param memberUserEntity
     * @return
     */
    R save(ProjectVo project,MemberUserEntity memberUserEntity);

    /**
     * 项目列表
     *
     * @param memberUserEntity
     * @return
     */
    R projectLists(MemberUserEntity memberUserEntity);

    /**
     * 项目更新（修改删除）
     *
     * @param projectVo
     * @param entity
     * @return
     */
    R projectEdit(ProjectVo projectVo,MemberUserEntity entity);

    /**
     * 当前项目修改
     *
     * @param projectVo
     * @param entity
     * @return
     */
    R currentProjectEdit(ProjectVo projectVo,MemberUserEntity entity);

    /**
     * 获取项目
     *
     * @param projectId
     * @return
     */
    R getProjectById(Long projectId);

    /**
     * 获取项目名字
     *
     * @param memberUserEntity
     * @return
     */
    R getProjectNameList(MemberUserEntity memberUserEntity);

    /**
     * 修改任务
     *
     * @param projectTaskVo
     * @param memberUserEntity
     * @return
     */
    R projectTaskEdit(ProjectTaskVo projectTaskVo, MemberUserEntity memberUserEntity);

    /**
     * 项目管理
     *
     * @param projectId
     * @return
     */
    R projectManageShow(Long projectId);

    /**
     * 项目下的阶段负责人
     *
     * @param projectId
     * @param stageId
     * @param memberUserEntity
     * @return
     */
    R projectStageUser(Long projectId,Integer stageId,MemberUserEntity memberUserEntity);

    /**
     * 修改阶段名字
     *
     * @param projectTaskVo
     * @param userId
     * @return
     */
    boolean editStageName(ProjectTaskVo projectTaskVo,long userId);


    /**
     * 获取项目下的各个阶段的任务集合
     *
     * @param projectId 项目id
     * @param stageId   阶段id
     * @return
     */
    R getTaskList(Long projectId,Integer stageId);

}

